package com.dudu.service.impl;

import java.util.List;

import net.sf.json.JSONObject;

import org.springframework.beans.BeanUtils;

import com.dudu.bean.RoleBean;
import com.dudu.bean.RoleMenuBean;
import com.dudu.bean.RoleUserBean;
import com.dudu.dao.RoleDao;
import com.dudu.dao.RoleMenuDao;
import com.dudu.dao.RoleUserDao;
import com.dudu.model.Role;
import com.dudu.model.RoleMenu;
import com.dudu.model.RoleUser;
import com.dudu.service.IRoleService;

import core.CoreDao;
import core.CoreDaoInvoke;
/**
 * 角色权限 service
 * @author gaoxs
 *
 */
public class RoleServiceImpl  implements IRoleService {
	private CoreDao coreDao = CoreDaoInvoke.getInstance();
	private RoleDao roleDao =new RoleDao();
	private RoleMenuDao roleMenuDao=new RoleMenuDao();
	private RoleUserDao roleuserDao=new RoleUserDao();
	/**
	 * 查询所有角色权限
	 * @return
	 */
	public List<JSONObject> queryAll(){
		return roleDao.queryAll(coreDao);
	}
	/**
	 * 新增角色
	 * @param bean
	 * @return
	 */
	public int insertRole(RoleBean bean){
		return roleDao.insert(coreDao, conversion(bean));
	}
	/**
	 * 更新角色
	 * @param bean
	 * @return
	 */
	public int updateRole(RoleBean bean){
		return roleDao.update(coreDao, conversion(bean));
	}
	/**
	 * 根据角色ID查询权限
	 * @param roleid
	 */
	public List<JSONObject> queryMenuByRole(Integer roleid){
		return roleMenuDao.queryMenuByRole(coreDao, roleid);
	}
	/**
	 * 清空角色原有的权限配置
	 * @param roleId
	 * @return
	 */
	public int deleteRoleMenuByRoleid(Integer roleId){
		return roleMenuDao.deleteByRoleid(coreDao, roleId);
	}
	/**
	 * 添加角色新的权限配置
	 * @param bean
	 * @return
	 */
	public int insertRoleMenu(RoleMenuBean bean){
		return roleMenuDao.insert(coreDao, conversion(bean));
	}
	/**
	 * 根据角色ID查询所有用户
	 * @param roleid
	 * @return
	 */
	public List<JSONObject> queryUserByRole(Integer roleid){
		return roleuserDao.queryUserByRole(coreDao, roleid);
	}
	/**
	 * 根据角色ID删除所有用户角色关系
	 * @param roleId
	 * @return
	 */
	public int deleteRoleUserByRoleid(Integer roleId){
		return roleuserDao.deleteByRoleid(coreDao, roleId);
	}
	/**
	 * 添加用户角色关系
	 * @param bean
	 * @return
	 */
	public int insertRoleUser(RoleUserBean bean){
		return roleuserDao.insert(coreDao, conversion(bean));
	}
	/**
	 * 转化
	 * @param bean
	 * @return
	 */
	private RoleUserBean conversion(RoleUser bean){
		RoleUserBean roleUserBean=new RoleUserBean();
		BeanUtils.copyProperties(bean, roleUserBean);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return roleUserBean;
	}
	/**
	 * 转化
	 * @param bean
	 * @return
	 */
	private RoleUser conversion(RoleUserBean bean){
		RoleUser roleUser=new RoleUser();
		BeanUtils.copyProperties(bean, roleUser);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return roleUser;
	}
	/**
	 * 转化
	 * @param bean
	 * @return
	 */
	private RoleMenu conversion(RoleMenuBean bean){
		RoleMenu roleMenu=new RoleMenu();
		BeanUtils.copyProperties(bean, roleMenu);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return roleMenu;
	}
	/**
	 * 转化
	 * @param bean
	 * @return
	 */
	private RoleMenuBean conversion(RoleMenu bean){
		RoleMenuBean  roleMenuBean=new RoleMenuBean();
		BeanUtils.copyProperties(bean, roleMenuBean);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return roleMenuBean;
	}
	/**
	 * 转化
	 * @param menu
	 * @return
	 */
	private RoleBean conversion(Role role){
		RoleBean roleBean=new RoleBean();
		BeanUtils.copyProperties(role, roleBean);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return roleBean;
	}
	/**
	 * 转化
	 * @param menuBean
	 * @return
	 */
	private Role conversion(RoleBean roleBean){
		Role role=new Role();
		BeanUtils.copyProperties(roleBean,role);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return role;
	}
}
